iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0

大家好,各位應該都聽過python,這是當今世界上最熱門的程式語言之一,不過今天不是要來討論他的歷史的。python擁有非常多開源的函式庫,而在資料科學中以基礎來講numpy、pandas、matplotlib、seaborn都是非常常用的。今天會快速的簡述python的基礎語法,詳細操作有許多教學也有官方文檔可閱讀,各位就準備好跟我一起領略python的美妙之處吧。

基礎輸入輸出

我們可以用print()跟input()來做到基本的輸入跟輸出,print中可以是任何變數,字串等內容,input中可以是提示語,提示要輸入甚麼內容,在實際執行程式時才不會不知道要輸入甚麼。而溢出字元\n代表換行\t代表縮排,這些都是可以幫助排版的功能,其餘的就不介紹了,網路上有相當多教學~

print('hello world')
num = input('input a number: ')
print(num)

執行過就會變成這樣。

hello world
input a number: 15
15

而變數如何定義以及種類請繼續看下去。

基礎資料型態

python中有幾種資料型態,分別是整數(int)、浮點數(float)、布林值(bool)、字串(string)、串列(list)以及字典(dict),括號中的英文代表可以使用這些方法將資料強制轉換成該資料型態,各種模組也會有模組自定義的資料型態,如下。

num1=1 #整數int
num2=5.8 #浮點數float
str1='hello' #字串str
list1=[0,1,3.5,'hello'] #串列list
dict1={'a':0,'b':15} #字典dict
str2=str(num1) #把1轉成字串的'1'

但這樣可能就會發現今天出現一個1,他到底是字串的’1’還是整數1,這時候就可以使用type(變數)來確認變數屬於甚麼資料型態,這個方法還蠻好用的,在不確定變數的資料型態都可以使用type來確認。

print(type(num1)) #<class 'int'>

tips:#代表註解的意思,通常會用來標記這行程式碼是負責處理甚麼的或者添加備忘錄等會使用的,#後面的文字,程式碼等都不會被執行。

基本操作

python可以使用一些運算符號來進行數學運算,例如1+5,10/2等,值得注意的是2**2代表2的平方,5//3代表取5/3的商數,而5%3代表取5/3的餘數。

除此之外還有比較高階的複合指定運算子。

例如:

x=2
x+=2 #x=x+2
print(x) #4

x+=2就代表x加上2後重新定義,其等於x=x+2,其他也可使用-=、*=、/=來重新定義變數

然後字串也可以使用+來合併兩個字串以及用*來重複字串。

基本判斷式

python可以使用if…elif…else來進行判斷。

if、elif後都需要加判斷式,判斷是會輸出True或者False,當滿足條件(即判斷式輸出True)就會執行底下的區塊,若都不能滿足的話就會執行else底下的區塊,要注意要使用縮排(可按TAB鍵),才會知道這些程式是屬於哪個區塊的。

x=90
if(x<=100):
    print('A')
elif(x<=90):
    print('B')
else:
    print('C')
# A

迴圈

python可以用for跟while來進行迴圈,不同的是for會指定執行次數,while在後面的判斷式如果是True的話就會無限執行下去。

for的語法很簡單,for 變數 in 可迭代物件(range函式、enumerate函式、字串、串列、字典等):

底下就是希望重複執行的程式區塊,而最常用的方法就是搭配range函式,語法如下:range(起始值,結束值,公差值)。

for i in range(0,10,2):
    print(i)
0
2
4
6
8

你可能會覺得很奇怪為甚麼沒有10,因為實際上最多只會跑到結束值-1(此例來說是9),所以結束值本身就不會被執行。

最後當要強制結束執行迴圈可以使用break關鍵字來跳離迴圈,continue關鍵字是會不執行該關鍵字底下的程式而進入下一次迴圈的迭代,這兩個關鍵字常搭配判斷式使用。

巢狀迴圈

所謂巢狀迴圈就是迴圈的進階,在迴圈中再放入一個以上的迴圈,如下:

for i in range(3):
    for j in range(3):
        print(f'i={i},j={j}')

此巢狀迴圈為兩個迴圈組成的,當然也可以有三個,四個…的迴圈組合。猜猜看程式執行的結果會是如何呢~倒數3秒!3~2~1答案揭曉~

i=0,j=0
i=0,j=1
i=0,j=2
i=1,j=0
i=1,j=1
i=1,j=2
i=2,j=0
i=2,j=1
i=2,j=2

原因是因為迴圈會把迴圈裡面的程式區塊執行完畢才進入下一次迭代,for i in range(3)的區塊為for j in range(3),規則上會先等for j in range(3)三次迭代結束後for i in range(3)才會迭代一次。雖然有點複雜,不過理解了以後這個概念自開發程式可謂是關鍵。

索引值跟切片搜尋

對於可迭代物件(這邊以字串跟串列說明)可使用索引值找出對應值,也可使用切片搜尋找出符合條件的一個以上的結果。

list1=[1,2,3,4,5,6,7,8,9]
str1='abcdefghi'

print(list1[0],list1[4],list1[-1])
print(str1[0],str1[4],str1[-1])
print(list1[0:3],list1[:3],list1[5:])

基本上程式語言的數都是從0開始,索引值0是第一個元素,以此類推,而索引值是負數又是怎麼一回事呢?原來索引值是負數代表是從可迭代物件的後面數起,-1代表到數第一個,以此類推

而切片搜尋是使用[n:m]來找出索引值n到索引值m-1其中所有的資料,[n:]代表從n到最後一個的資料、[:n]代表從第一個元素到索引值n-1的資料,[n:m:d]跟[n:m]差不多,只是多出了索引值的公差,執行結果如下。

1 5 9
a e i
[1, 2, 3] [1, 2, 3] [6, 7, 8, 9]

結語

今天就先介紹到這裡,這只是剛開始的牛刀小試而已,明天會介紹串列的一些操作,以及自定義副程式、還有例外處理。希望明天大家可以再打起精神來繼續學習!

參考資料、連結

如果想了解更多的話這邊有python的官方教學指南,各位可以再去看看
https://docs.python.org/3/tutorial/index.html


上一篇
D1:關於這次鐵人賽...
下一篇
D3:python入門(2/3)
系列文
高中生也可以!利用強化學習讓機器人動起來!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言